package integer;



/**
 * 包装类
 * java定义了8个包装类,目的是为了解决基本类型不能直接参与面向对象开发的问题,使得基本类型
 * 可以通过包装类的实例以对象的形式存在.
 * 其中数字类型的包装类都继承自java.lang.Number,而char和boolean的包装类直接继承自Object
 * Number是一个抽象类,定义了一些方法,目的是让包装类可以将其表示的基本类型转换为其他数字
 * 类型.
 * 包装类是为了解决基本数据类型不能直接参与面向对象开发（没有面向对象三大特征），因此
 * 包装类可以让基本类型以“对象”形式存在。
 */

public class IntegerDemo {
    public static void main(String[] args) {
        int a=50;
        //1、java不推荐使用new创建包装类
//        Integer a1=new Integer(a);
//        Integer a2=new Integer(a);
//        System.out.println(a1==a2);
//        System.out.println(a1.equals(a2));


        //重用1字节之内的整数对象（-128-127)。
        Integer a1=Integer.valueOf(a);
        Integer a2=Integer.valueOf(a);
        System.out.println(a1==a2);
        System.out.println(a1.equals(a2));
        Double b1=Double.valueOf(20.5);
        Double b2=Double.valueOf(20.5);
        System.out.println(b1==b2);
        System.out.println(b1.equals(b2));

        int d1=a1.intValue();
        double d2=b1.doubleValue();
        System.out.println(d1);
        System.out.println(d2);

        int c1=b1.intValue();
        double c2=a1.doubleValue();
        System.out.println(c1);
        System.out.println(c2);
    }
}
